package com.tsyz.servlet.service;

import com.tsyz.servlet.domain.dto.req.UserDeleteUserReqDTO;
import com.tsyz.servlet.domain.dto.req.UserFindByUserNameReqDTO;
import com.tsyz.servlet.domain.dto.req.UserGetUserByIdReqDTO;
import com.tsyz.servlet.domain.dto.req.UserUpdateUserReqDTO;
import com.tsyz.servlet.domain.dto.resq.UserFindAllRespDTO;
import com.tsyz.servlet.domain.dto.resq.UserFindByUserNameRespDTO;
import com.tsyz.servlet.domain.dto.resq.UserGetUserByIdRespDTO;
import com.tsyz.servlet.domain.po.UserPO;

import java.util.List;


public interface UserService {


    /**
     * 获取所有用户列表
     *
     * @return 所有用户的列表
     */
    List<UserFindAllRespDTO> findAll();


    /**
     * 根据用户ID获取用户信息
     *
     * @param reqDto 用户信息
     * @return 对应ID的用户对象
     */
    UserGetUserByIdRespDTO getUserById(UserGetUserByIdReqDTO reqDto);


    /**
     * 更新用户信息
     *
     * @param reqDto 要更新的用户对象
     * @return 更新后的用户对象
     */
    UserPO updateUser(UserUpdateUserReqDTO reqDto);

    /**
     * 创建一个新的用户对象。
     *
     * @param userPo 用户对象，包含用户的基本信息。
     * @return 新创建的用户对象。
     */
    UserPO createUser(UserPO userPo);

    /**
     * 根据用户ID删除用户
     *
     * @param reqDto 用户ID
     * @return 删除是否成功
     */
    boolean deleteUser(UserDeleteUserReqDTO reqDto);

    /**
     * 根据用户名查找用户对象。
     *
     * @param userFindByUserNameReqDto 用户名
     * @return 对应的用户对象，若不存在则返回null
     */
    UserFindByUserNameRespDTO findByUserName(UserFindByUserNameReqDTO userFindByUserNameReqDto);

    /**
     * 检查两个密码是否匹配。
     *
     * @param password  密码字符串。
     * @param password1 另一个密码字符串。
     * @return 如果两个密码匹配，返回 true；否则返回 false。
     */

    boolean checkPassword(String password, String password1);

}
